#include <stdio.h>
#include <assert.h>
#include <string.h>
#include <stdbool.h>

#define EVEN_GT(X, Y) (X) % 2 == 0  && (X) > (Y) ? 1 : 0
#define EXPRESSION(X, Y) printf(" "#X" is %d and "#Y" is %d\n", X, Y)
#define PS() putchar(' ')
#define PINT(X) printf("name: "#X"; value: %d; address %p\n", (X), &(X))
#define PR_DATE() printf("date is %s", __DATE__)
//3+4 is 7 and 4*12 is 48
//11．创建一个使用泛型选择表达式的宏，如果宏参数是_Bool类型，
//对"boolean"求值，否则对"notboolean"求值。

#define BOOL( X) _Generic(( X), _Bool : "boolean", default : "not boolean")

//- 14．假设data1是内含100个double类型元素的数组，data2是内含300个double类型元素的数组。　　
//- a．编写memcpy()的函数调用，把data2中的前100个元素拷贝到data1中。　　
//- b．编写memcpy()的函数调用，把data2中的后100个元素拷贝到data1中。

#include <stdlib.h>

#define LEN 5

int comp(const void *a, const void *b) {
    int ai = *(int *) a;
    int bi = *(int *) b;
    if (ai > bi)return 1;
    if (bi > ai) return -1;
    return 0;

}

int main() {
    int r = EVEN_GT(10 + 2, 9 * 3);
    assert(!r);
    EXPRESSION(3 + 4, 4 * 12);
    for (int i = 0; i < 40; ++i) {
        PS();
    }
    puts("");
    int fop = 11;
    PINT(fop);
    PR_DATE();
    int scores[LEN] = {3, 1, 9};
    qsort(scores, LEN, sizeof(int), comp);

    double data1[100] = {};
    double data2[300] = {};

    return 0;
}